#pragma once

#include "FITKInterfaceCustomDataAPI.h"
#include "FITK_Kernel/FITKCore/FITKAbstractNDataObject.h"
#include "FITK_Kernel/FITKCore/FITKVarientParams.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"

namespace Interface
{
	class FITKInterfaceCustomDataAPI FITKCDCfgPSetSwitch : public Core::FITKAbstractNDataObject, public Core::FITKVarientParams
    {
    public:
        explicit FITKCDCfgPSetSwitch() = default;
        virtual ~FITKCDCfgPSetSwitch() = default;

		// SET
		void setPressure_Threshold(bool bVal);
		void setMinimum_Pressure(double dVal);
		void setDensity_Reinitial(bool bVal);
		void setReinitial_Steps(int nVal);
		void setTic(bool bVal);
		void setResort_Fluid(bool bVal);
		void setSlip(bool bVal);
		void setLJ_Force(bool bVal);
		void setLJ_Param(double dVal);
		void setPST(bool bVal);

		// GET
		bool getPressure_Threshold();
		double getMinimum_Pressure();
		bool getDensity_Reinitial();
		int getReinitial_Steps();
		bool getTic();
		bool getResort_Fluid();
		bool getSlip();
		bool getLJ_Force();
		double getLJ_Param();
		bool getPST();
    };


	class FITKInterfaceCustomDataAPI FITKCDCfgPSetSwitchManager : public Core::FITKAbstractDataManager<FITKCDCfgPSetSwitch>
	{
	public:
		explicit FITKCDCfgPSetSwitchManager() = default;
		virtual ~FITKCDCfgPSetSwitchManager() = default;
	};
}

